//package cc.magicjson.lifecycle;
//
//import cc.magicjson.config.ServerConfig;
//import cc.magicjson.manager.ServerManager;
//import cc.magicjson.utils.PortUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.ConfigurableApplicationContext;
//import org.springframework.context.SmartLifecycle;
//import org.springframework.stereotype.Component;
//
//@Component
//public class ServerLifecycle implements SmartLifecycle {
//
//    @Autowired
//    private ServerConfig serverConfig;
//
//    @Autowired
//    private ConfigurableApplicationContext context;
//
//    private boolean isRunning = false;
//
//    @Override
//    public void start() {
//        int port = serverConfig.getPort();
//
//        if (PortUtils.isPortInUse(port)) {
//            port = serverConfig.getBackPort();
//            // Optional: if switching ports, you might need to restart or reconfigure the app
//            ServerManager.switchToDefaultPort(context, serverConfig.getPort());
//        }
//
//        isRunning = true;
//    }
//
//    @Override
//    public void stop() {
//        // 任何停止逻辑
//        isRunning = false;
//    }
//
//    @Override
//    public boolean isRunning() {
//        return isRunning;
//    }
//
//    @Override
//    public int getPhase() {
//        return Integer.MAX_VALUE;  // 设置启动和停止的顺序，越大越晚启动和越早停止
//    }
//
//    @Override
//    public boolean isAutoStartup() {
//        return true;  // 自动启动
//    }
//
//    @Override
//    public void stop(Runnable callback) {
//        stop();
//        callback.run();
//    }
//}
